package com.wtw.test

import java.util.Properties

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}

object Test3 {
  def main(args: Array[String]): Unit = {

    val spark = SparkSession.builder().master("local[2]").appName("sparksql").getOrCreate()
    val sc = spark.sparkContext
    sc.setLogLevel("WARN")
    import spark.implicits._


    val prop = new Properties()
    prop.put("user", "root")
    prop.put("password", "root")
    prop.put("driver", "com.mysql.jdbc.Driver")
//    val jdbcDF = spark.read.jdbc("jdbc:mysql://192.168.120.201:3306/spark_test", "employee", prop)
//    jdbcDF.show()

    // （2） 配置 Spark， 通过 JDBC 连接 数据库 MySQL，
    // 编程 实现 利用 DataFrame 插入 如下图所示 的 两行 数据 到 MySQL 中，
    // 最后 打 印出 age 的 最大值 和 age 的 总和。 表 6- 3 employee 表 新增 数据
    val rdd = sc.parallelize(List("Mary F 26", "Tom M 23")).map(x => x.split(" "))
    val rowRDD = rdd.map(x => (x(0), x(1), x(2).toInt))
    val df: DataFrame = rowRDD.toDF("name", "gender", "age")
    df.write.mode("ignore").jdbc("jdbc:mysql://192.168.120.201:3306/spark_test", "employee", prop)
    val jdbcDF = spark.read.jdbc("jdbc:mysql://hadoop201:3306/spark_test", "employee", prop)
    jdbcDF.createOrReplaceTempView("emp")
    spark.sql("select max(age), sum(age) from emp").show()

    sc.stop()
    spark.close()
  }
}
